from public.action import *
from public.business import *
from public.testData import *
from public.tools import *
import time
testCase = "DBshop009_销售管理退货管理处理退货流程"


firefox=openBrowser(url) #调用自定义函数打开网页,url的值是在testData文件中定义的
#调用自定义函数进行登录
DBshopLogin(firefox,userName,password)
#在首页的搜索框输入小米
firefox.find_element_by_xpath('//input[@name="keywords"]').send_keys('小米')
#点击搜索按钮
firefox.find_element_by_xpath('//input[@type="submit"]').click()
# 2.选择小米mix3,加入到购物车,点击购物车按钮
# #下拉右侧滚动条
# firefox.execute_script("window.scrollTo(0,500)")
# priceElement=firefox.find_element_by_id('goods_price_8')
# #调用自定义函数进行模拟鼠标移动
# moveToElement(firefox,priceElement)
# #点击加入购物车按钮
# firefox.find_element_by_xpath('//a[@onclick="add_cart(8, 2);"]').click()
# #点击进入购物车
# firefox.find_element_by_id('J_miniCart').click()
#点击商品图片弹出新页面
firefox.find_element_by_xpath('//a[@href="/dbshop/goods/8/2"]').click()
#调用函数切换页面
switchWindow(firefox,2)
#在新页面中点击加入购物车按钮
firefox.find_element_by_id('add_cart_submit').click()
time.sleep(2)
#点击去购物车结算按钮
firefox.find_element_by_link_text('去购物车结算').click()
# 3.点击"去结算"按钮
firefox.find_element_by_link_text('去结算').click()
#选择收货地址
firefox.find_element_by_xpath("//input[@name = 'user_address_id' and @value = '1']").click()
# 4.默认地址已经被选择,点击下一步按钮
firefox.find_element_by_xpath('//input[@value="下一步"]').click()
# 5.支付方式选择"线下支付",点击确认订单
firefox.find_element_by_xpath('//input[@value="xxzf"]').click()
#支付方式选择"余额支付"
# firefox.find_element_by_xpath("//input[@value='yezf']").click()
#支付方式选择"货到付款"
# firefox.find_element_by_xpath("//input[@value='hdfk']").click()
firefox.find_element_by_xpath('//input[@value="确认订单"]').click()

#使用变量orderNO存储订单编号
orderNO=firefox.find_element_by_xpath('(//font[@color="color:#ED145B"])[2]').text
rootPath=get_pro_rootpath()
writeFile(rootPath+'\public\order1.txt',orderNO) # 将订单编号写入到文件中
# 6.点击马上支付,输入"支付凭证信息","线下支付宝支付",点击提交支付凭证按钮
firefox.find_element_by_xpath('//input[@value="马上去支付"]').click()
firefox.find_element_by_id('state_info').send_keys('线下支付宝支付')
firefox.find_element_by_xpath('//button[text()="提交支付凭证"]').click()
# 7.登录后台管理系统,地址是"http://localhost/dbshop/admin",
firefox.get(urlAdmin)
#调用自定义函数进行后台的登录
DBshopLoginAdmin(firefox)
# 8.进入销售管理订单管理,找到刚才前台提交的订单,点击"编辑查看",再点击付款操作按钮
#调用后台的菜单操作函数
DBshopEnterMenu2(firefox,'销售管理','订单管理')
#搜索出订单
firefox.find_element_by_name('order_sn').send_keys(orderNO)
firefox.find_element_by_xpath('//button').click()
firefox.find_element_by_link_text('编辑查看').click()
firefox.find_element_by_link_text('付款操作').click()
# 9.将付款状态修改为"已付款",操作说明中填写"已在支付宝账号中收到款项",点击提交保存按钮
#先搜索出上面的订单号,
firefox.find_element_by_xpath('//option[text()="已付款"]').click()
firefox.find_element_by_id('state_info').send_keys('已在支付宝账号中收到款项')
#点击提交保存按钮
firefox.find_element_by_xpath('//button').click()
# 10.点击"发货操作"按钮,输入快递单号"00100001111",输入操作说明"已发货",点击"点击发货"按钮
firefox.find_element_by_link_text('发货操作').click()
firefox.find_element_by_xpath('//button').click()
# 11.到dbshop前台我的订单中完成收货
firefox.get(url)
# #点击我的订单
firefox.find_element_by_link_text('我的订单').click()
#点击已发货
firefox.find_element_by_partial_link_text('已发货').click()
firefox.find_element_by_name('search_order_sn').send_keys(orderNO)
firefox.find_element_by_xpath('//button').click()
#点击确认收货
firefox.find_element_by_xpath('//button[text()="确认收货"]').click()
firefox.find_element_by_xpath('//button[@type="submit"]').click()
firefox.switch_to.alert.accept()
# 12.到dbshop前台查看我的订单"交易完成"中,检查上面的订单状态
#点击交易完成
firefox.find_element_by_partial_link_text('交易完成').click()
firefox.find_element_by_name('search_order_sn').send_keys(orderNO)
firefox.find_element_by_xpath('//button').click()
#点击退货申请
firefox.find_element_by_xpath("//ul[@class='uc-nav-list']/li[10]").click()
firefox.find_element_by_link_text("点此申请退货").click()
firefox.find_element_by_id("order_sn").send_keys(orderNO)
firefox.find_element_by_id("search-order").click()
firefox.find_element_by_id("refund_info").send_keys("退货")
firefox.find_element_by_xpath("//button[@class='btn btn-primary']").click()
time.sleep(3)
firefox.switch_to_alert().accept()
time.sleep(3)
firefox.find_element_by_xpath("//button[@class='btn btn-primary']").click()
time.sleep(3)
firefox.switch_to_alert().accept()



firefox = openBrowser(urlAdmin) #打开后台网页
DBshopLoginAdmin(firefox)   #后台登录
# 1.点击商品管理退货管理。
DBshopEnterMenu2(firefox,"销售管理","退货管理")
# 2.点击退货方式，选择框选择“退货到账户余额”点击“搜索”按钮。
# #输入订单编号
# firefox.find_element_by_xpath("//input[@class='span11']").send_keys(orderNO)
# #选择退款到账户余额
# firefox.find_element_by_xpath("//select[@name='refund_type']/option[2]").click()
# .点击处理退货，退货处理“同意退货”，退款金额“2199”。处理意见“同意”。
firefox.find_element_by_xpath('//td[text()="%s"]/following-sibling::td[5]/a'%orderNO).click()
firefox.find_element_by_id("refund_price").clear() #清空输入框
firefox.find_element_by_id("refund_price").send_keys("2199") #输入2199
firefox.find_element_by_id("re_refund_info").send_keys("同意")
# .提交处理结果。
firefox.find_element_by_xpath("//button[text()='提交处理结果']").click()
firefox.quit()

# .回到前台界面，点击“用户中心”，退货申请界面，查看退款成功
firefox=openBrowser(url) #调用自定义函数打开网页,url的值是在testData文件中定义的
#调用自定义函数进行登录
DBshopLogin(firefox,userName,password)
firefox.find_element_by_link_text("用户中心").click()
#点击退货申请
firefox.find_element_by_xpath("//ul[@class='uc-nav-list']/li[10]").click()
firefox.find_element_by_xpath("//input[@placeholder='输入订单编号']").send_keys("1666537801910002")
firefox.find_element_by_xpath("//button[text()='搜索']").click()

#断言
if firefox.find_element_by_xpath("//td[text()='%s']/following-sibling::td[3]"%orderNO).text :
    writeLog("%s 测试通过" % testCase)
else:
    writeLog("%s 测试不通过" % testCase)
    getPhoto(firefox)
firefox.quit()